home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / lib / include / netinet / RCS / tcp_fsm.h,v < prev    next >
Text File  |  1988-06-29  |  3KB  |  108 lines

  1. head     1.2;
  2. access   ;
  3. symbols  ;
  4. locks    ; strict;
  5. comment  @ * @;
  6.  
  7.  
  8. 1.2
  9. date     88.06.29.15.11.16;  author ouster;  state Exp;
  10. branches ;
  11. next     1.1;
  12.  
  13. 1.1
  14. date     88.06.21.11.59.31;  author ouster;  state Exp;
  15. branches ;
  16. next     ;
  17.  
  18.  
  19. desc
  20. @@
  21.  
  22.  
  23. 1.2
  24. log
  25. @Add ifdefs to keep files from being processed twice.
  26. @
  27. text
  28. @/*
  29.  * Copyright (c) 1982, 1986 Regents of the University of California.
  30.  * All rights reserved.
  31.  *
  32.  * Redistribution and use in source and binary forms are permitted
  33.  * provided that this notice is preserved and that due credit is given
  34.  * to the University of California at Berkeley. The name of the University
  35.  * may not be used to endorse or promote products derived from this
  36.  * software without specific prior written permission. This software
  37.  * is provided ``as is'' without express or implied warranty.
  38.  *
  39.  *    @@(#)tcp_fsm.h    7.2 (Berkeley) 12/7/87
  40.  */
  41.  
  42. #ifndef _TCP_FSM
  43. #define _TCP_FSM
  44.  
  45. /*
  46.  * TCP FSM state definitions.
  47.  * Per RFC793, September, 1981.
  48.  */
  49.  
  50. #define    TCP_NSTATES    11
  51.  
  52. #define    TCPS_CLOSED        0    /* closed */
  53. #define    TCPS_LISTEN        1    /* listening for connection */
  54. #define    TCPS_SYN_SENT        2    /* active, have sent syn */
  55. #define    TCPS_SYN_RECEIVED    3    /* have send and received syn */
  56. /* states < TCPS_ESTABLISHED are those where connections not established */
  57. #define    TCPS_ESTABLISHED    4    /* established */
  58. #define    TCPS_CLOSE_WAIT        5    /* rcvd fin, waiting for close */
  59. /* states > TCPS_CLOSE_WAIT are those where user has closed */
  60. #define    TCPS_FIN_WAIT_1        6    /* have closed, sent fin */
  61. #define    TCPS_CLOSING        7    /* closed xchd FIN; await FIN ACK */
  62. #define    TCPS_LAST_ACK        8    /* had fin and close; await FIN ACK */
  63. /* states > TCPS_CLOSE_WAIT && < TCPS_FIN_WAIT_2 await ACK of FIN */
  64. #define    TCPS_FIN_WAIT_2        9    /* have closed, fin is acked */
  65. #define    TCPS_TIME_WAIT        10    /* in 2*msl quiet wait after close */
  66.  
  67. #define    TCPS_HAVERCVDSYN(s)    ((s) >= TCPS_SYN_RECEIVED)
  68. #define    TCPS_HAVERCVDFIN(s)    ((s) >= TCPS_TIME_WAIT)
  69.  
  70. #ifdef    TCPOUTFLAGS
  71. /*
  72.  * Flags used when sending segments in tcp_output.
  73.  * Basic flags (TH_RST,TH_ACK,TH_SYN,TH_FIN) are totally
  74.  * determined by state, with the proviso that TH_FIN is sent only
  75.  * if all data queued for output is included in the segment.
  76.  */
  77. u_char    tcp_outflags[TCP_NSTATES] = {
  78.     TH_RST|TH_ACK, 0, TH_SYN, TH_SYN|TH_ACK,
  79.     TH_ACK, TH_ACK,
  80.     TH_FIN|TH_ACK, TH_FIN|TH_ACK, TH_FIN|TH_ACK, TH_ACK, TH_ACK,
  81. };
  82. #endif
  83.  
  84. #ifdef KPROF
  85. int    tcp_acounts[TCP_NSTATES][PRU_NREQ];
  86. #endif
  87.  
  88. #ifdef    TCPSTATES
  89. char *tcpstates[] = {
  90.     "CLOSED",    "LISTEN",    "SYN_SENT",    "SYN_RCVD",
  91.     "ESTABLISHED",    "CLOSE_WAIT",    "FIN_WAIT_1",    "CLOSING",
  92.     "LAST_ACK",    "FIN_WAIT_2",    "TIME_WAIT",
  93. };
  94. #endif
  95.  
  96. #endif _TCP_FSM
  97. @
  98.  
  99.  
  100. 1.1
  101. log
  102. @Initial revision
  103. @
  104. text
  105. @d15 3
  106. d68 2
  107. @
  108.